HEX
Server: Apache
System: Linux clpupre 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64
User: undanet (1000)
PHP: 7.4.3
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/undanet/www/PortalEmpleo/src/Controller/ConvocatoriaController.php
<?php

namespace PortalEmpleo\Controller;

require __DIR__ . '/../../vendor/autoload.php';

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use PortalEmpleo\Entity\DboCandidato;
use PortalEmpleo\Entity\DboConvocatoria;
use PortalEmpleo\Repository\DBCandidatoRepository;
use PortalEmpleo\Repository\DBCandidatoConvocatoriaRepository;
use PortalEmpleo\Repository\DBCandidatoIdiomaRepository;
use PortalEmpleo\Repository\DBCandidatoPerfilRepository;
use PortalEmpleo\Repository\DBConvocatoriaMeritoRepository;
use PortalEmpleo\Repository\DBConvocatoriaRepository;
use PortalEmpleo\Repository\DBConvocatoriaRequisitoRepository;
use PortalEmpleo\Repository\DBConvocatoriaResolucionRepository;
use PortalEmpleo\Repository\DBTribunalConvocatoriaRepository;
use PortalEmpleo\Repository\DBTribunalValoracionRepository;
use PortalEmpleo\Repository\DBTribunalAprobacionRequisitosRepository;
use PortalEmpleo\Repository\DBTribunalAprobacionMeritosRepository;
use PortalEmpleo\Repository\DBTribunalAprobacionExamenRepository;
use PortalEmpleo\Repository\DBImpugnacionRepository;
use PortalEmpleo\Entity\DboImpugnacion;
use PortalEmpleo\Repository\DBImpugnacionDocRepository;
use PortalEmpleo\Entity\DboImpugnacionDoc;
use PortalEmpleo\Utils\Load;

class ConvocatoriaController extends AbstractController
{
    public $load;

    public function __construct()
    {
        $this->load = new Load();
    }

    /**
     * @Route("/convocatorias", name="convocatoria")
     */
    public function index(): Response
    {
        return $this->render('convocatoria/index.html.twig', [
            'controller_name' => 'ConvocatoriaController',
        ]);
    }

    public function listarConvocatorias($lang)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $lConvocatorias = call_user_func([
            $dbRepository, 'obtenerConvocatoriasSinCerrar',
        ], $lang);

        $this->load->view('ConvocatoriaView.php', $lConvocatorias);
    }

    public function listarConvocatoriashome($lang)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $lConvocatorias = call_user_func([
            $dbRepository, 'obtenerConvocatoriasSinCerrar',
        ], $lang);

        $this->load->view('ConvocatoriaHomeView.php', $lConvocatorias);
    }

    public function listarConvocatoriasAdmin($lang, $wpuser = 0)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $data['lConvocatorias'] = call_user_func([
            $dbRepository, 'obtenerConvocatorias',
        ], $lang, null, false);

        $dbRepository1 = new DBTribunalConvocatoriaRepository();
        $data['ltribunal'] = call_user_func([
            $dbRepository1, 'obtenerTribunalConvocatoriasPorUsuarioWP',
        ], $lang, $wpuser);

        $this->load->view('ConvocatoriaViewAdmin.php', $data);
    }

    public function listarConvocatoriaCandidatos(
        $lang, $idConvocatoria, $wpuser = 0
    ) {
        $dbRepository = new DBConvocatoriaRepository();
        $data['lconvocatoria'] = call_user_func([
            $dbRepository, 'obtenerConvocatoriasReferencia',
        ], $lang, null);

        $dbRepository15 = new DBTribunalConvocatoriaRepository();
        $data['myltribunal'] = call_user_func([
            $dbRepository15, 'obtenerTribunalConvocatoriasPorUsuarioWP',
        ], $lang, $wpuser);

        if (!isset($idConvocatoria) || $idConvocatoria == null) {
            if (isset($data['lconvocatoria'])
                && $data['lconvocatoria'] != null) {
                if (is_array($data['lconvocatoria'])
                    && count($data['lconvocatoria']) > 0
                    && is_object(reset($data['lconvocatoria']))) {
                    $dbRepository = new DBCandidatoConvocatoriaRepository();
                    $data['lcandidato'] = call_user_func([
                        $dbRepository, 'obtenerCandidatosPorConvocatoria',
                    ], $lang, reset($data['lconvocatoria'])->getIdconvocatoria());

                    $convocatoria = reset($data['lconvocatoria']);

                    $data['requisitos'] =
                        $this->obtenerRequisitosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                    $data['meritos'] =
                        $this->obtenerMeritosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                    $data['convocatoria'] = $convocatoria;
                    $dbRepository1 = new DBTribunalConvocatoriaRepository();
                    $data['ltribunal'] = call_user_func([
                        $dbRepository1, 'obtenerTribunal',
                    ], $lang, $convocatoria->getIdconvocatoria());
                    $dbRepository2 =
                        new DBTribunalAprobacionRequisitosRepository();
                    $data['aprobacionr'] = call_user_func([
                        $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                    ], $lang, $convocatoria->getIdconvocatoria());
                    $dbRepository3 =
                        new DBTribunalAprobacionMeritosRepository();
                    $data['aprobacionm'] = call_user_func([
                        $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                    ], $lang, $convocatoria->getIdconvocatoria());
                    $dbRepository4 = new DBImpugnacionRepository();
                    $data['impugnaciones'] = call_user_func([
                        $dbRepository4, 'obtenerImpugnaciones',
                    ], $lang, $convocatoria->getIdconvocatoria());
                    $dbRepository5 = new DBImpugnacionDocRepository();
                    $data['impugnacionesdoc'] = call_user_func([
                        $dbRepository5, 'obtenerImpugnacionesDoc',
                    ], $lang, $convocatoria->getIdconvocatoria());

                }
            } else {
                $data['lcandidato'] = null;
                $data['requisitos'] = null;
                $data['meritos'] = null;
                $data['convocatoria'] = null;
                $data['ltribunal'] = null;
                $data['aprobacionr'] = null;
                $data['aprobacionm'] = null;
                $data['impugnacion'] = null;
                $data['impugnacionesdoc'] = null;

            }
        } else {
            $dbRepository = new DBCandidatoConvocatoriaRepository();
            $data['lcandidato'] = call_user_func([
                $dbRepository, 'obtenerCandidatosPorConvocatoria',
            ], $lang, $idConvocatoria);

            $dbRepository = new DBConvocatoriaRepository();
            $convocatoria = call_user_func([
                $dbRepository, 'obtenerConvocatorias',
            ], $lang, $idConvocatoria);

            if (is_array($convocatoria)) {
                $convocatoria = reset($convocatoria);
            }

            $data['requisitos'] =
                $this->obtenerRequisitosConvocatoria($lang, $convocatoria->getIdconvocatoria());
            $data['meritos'] =
                $this->obtenerMeritosConvocatoria($lang, $convocatoria->getIdconvocatoria());
            $data['convocatoria'] = $convocatoria;
            $dbRepository1 = new DBTribunalConvocatoriaRepository();
            $data['ltribunal'] = call_user_func([
                $dbRepository1, 'obtenerTribunal',
            ], $lang, $convocatoria->getIdconvocatoria());
            $dbRepository2 = new DBTribunalAprobacionRequisitosRepository();
            $data['aprobacionr'] = call_user_func([
                $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
            ], $lang, $convocatoria->getIdconvocatoria());
            $dbRepository3 = new DBTribunalAprobacionMeritosRepository();
            $data['aprobacionm'] = call_user_func([
                $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
            ], $lang, $convocatoria->getIdconvocatoria());
            $dbRepository4 = new DBImpugnacionRepository();
            $data['impugnaciones'] = call_user_func([
                $dbRepository4, 'obtenerImpugnaciones',
            ], $lang, $convocatoria->getIdconvocatoria());
            $dbRepository5 = new DBImpugnacionDocRepository();
            $data['impugnacionesdoc'] = call_user_func([
                $dbRepository5, 'obtenerImpugnacionesDoc',
            ], $lang, $convocatoria->getIdconvocatoria());

        }

        if ($data['convocatoria'] != null
            && ($data['requisitos'] != null
                || $data['meritos'] != null)) {

            $data['lvaloraciones'] =
                $this->obtenerTodasValoracionesCandidatos($lang, $data['convocatoria']->getIdconvocatoria());

        }
        $this->load->view('ConvocatoriaListaCandidatoView.php', $data);
    }

    public function listarConvocatoriaTribunal($lang, $idConvocatoria)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $data['lconvocatoria'] = call_user_func([
            $dbRepository, 'obtenerConvocatoriasReferencia',
        ], $lang, null);

        if (!isset($idConvocatoria) || $idConvocatoria == null) {
            if (isset($data['lconvocatoria'])
                && $data['lconvocatoria'] != null) {
                if (is_array($data['lconvocatoria'])
                    && count($data['lconvocatoria']) > 0
                    && is_object(reset($data['lconvocatoria']))) {
                    $dbRepository = new DBTribunalConvocatoriaRepository();
                    $data['ltribunal'] = call_user_func([
                        $dbRepository, 'obtenerTribunal',
                    ], $lang, reset($data['lconvocatoria'])->getIdconvocatoria());
                }
            } else {
                $data['ltribunal'] = null;
            }
        } else {
            $dbRepository = new DBTribunalConvocatoriaRepository();
            $data['ltribunal'] = call_user_func([
                $dbRepository, 'obtenerTribunal',
            ], $lang, $idConvocatoria);
        }

        $this->load->view('ConvocatoriaListaTribunalView.php', $data);
    }

    public function modificarConvocatoriaTribunal($lang, $idConvocatoria)
    {
        $dbRepository = new DBConvocatoriaRepository();

        if (isset($idConvocatoria) && $idConvocatoria != null) {
            $data['lconvocatoria'] = call_user_func([
                $dbRepository, 'obtenerConvocatorias',
            ], $lang, $idConvocatoria);

            if (is_array($data['lconvocatoria'])) {
                $data['lconvocatoria'] = reset($data['lconvocatoria']);
            }

            $dbRepository = new DBTribunalConvocatoriaRepository();
            $data['ltribunal'] = call_user_func([
                $dbRepository, 'obtenerTribunal',
            ], $lang, $idConvocatoria);

            //obtener los usuarios de WP
            $data['lusuariosWP'] =
                call_user_func([$dbRepository, 'obtenerUsuariosWP']);

            //obtener los evaluadoreshabituales
        } else {
            $data = null;
        }

        $this->load->view('FormularioConvocatoriaTribunalView.php', $data);
    }

    public function obtenerTribunalPorConvocatoriayUsuario(
        $lang, $idConvocatoria, $codigoUsuarioWP
    ) {
        $dbRepository = new DBTribunalConvocatoriaRepository();

        if ((isset($idConvocatoria) && $idConvocatoria != null)
            && (isset($codigoUsuarioWP) && $codigoUsuarioWP != null)) {
            $data = call_user_func([
                $dbRepository, 'obtenerTribunalPorConvocatoriayUsuario',
            ], $lang, $idConvocatoria, $codigoUsuarioWP);

            if ($data->getIdtribunalconvocatoria() == null) {
                $data = null;
            }
        } else {
            $data = null;
        }

        return $data;
    }

    public function nuevaConvocatoria($lang)
    {
        $this->load->view('FormularioGestionConvocatoria.php', $lang);
    }

    public function modificarConvocatoria($idConvocatoria, $lang)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $convocatoria = call_user_func(
            [$dbRepository, 'obtenerConvocatorias',],
            $lang,
            $idConvocatoria,
            false
        );

        if (is_array($convocatoria)) {
            $convocatoria = reset($convocatoria);
            $dbRepositoryResoluciones =
                new DBConvocatoriaResolucionRepository();
            $lresoluciones = call_user_func(
                [$dbRepositoryResoluciones, 'obtenerResoluciones',],
                $lang,
                $idConvocatoria
            );

            $dbRepositoryRequisitos = new DBConvocatoriaRequisitoRepository();
            $lrequisitos = call_user_func(
                [$dbRepositoryRequisitos, 'obtenerRequisitos',],
                $lang,
                $idConvocatoria
            );

            $dbRepositoryMeritos = new DBConvocatoriaMeritoRepository();
            $lmeritos = call_user_func(
                [$dbRepositoryMeritos, 'obtenerMeritos',],
                $lang,
                $idConvocatoria
            );

            $data['convocatoria'] = $convocatoria;
            $data['resoluciones'] = $lresoluciones;
            $data['requisitos'] = $lrequisitos;
            $data['meritos'] = $lmeritos;

            $data['lcandidato'] =
                $this->obtenerCandidatosConvocatoria($lang, $idConvocatoria);

            $dbRepository1 = new DBTribunalConvocatoriaRepository();
            $data['ltribunal'] = call_user_func(
                [$dbRepository1, 'obtenerTribunal',],
                $lang,
                $idConvocatoria
            );

            $dbRepository2 = new DBTribunalAprobacionRequisitosRepository();
            $data['aprobacionr'] = call_user_func(
                [$dbRepository2, 'obtenerAprobacionesPorConvocatoria',],
                $lang,
                $idConvocatoria
            );

            $dbRepository3 = new DBTribunalAprobacionMeritosRepository();
            $data['aprobacionm'] = call_user_func(
                [
                    $dbRepository3,
                    'obtenerAprobacionesPorConvocatoria',
                ],
                $lang,
                $idConvocatoria
            );

            if ($data['convocatoria'] != null
                && ($data['requisitos'] != null || $data['meritos'] != null)
            ) {
                $data['lvaloraciones'] =
                    $this->obtenerTodasValoracionesCandidatos($lang, $idConvocatoria);
            }
            $codigoEstado = ($convocatoria->getCodigoestadoconvocatoria())
                ->getIdestadoconvocatoria();

            if($codigoEstado == 6 
				&& (
					empty($convocatoria->getPlazaAdjudicada())
					|| is_null($convocatoria->getPlazaAdjudicada())
				)
			) {
                $candidatoAdjudicado =
                    $this->getCandidatoAdjudicadoConvocatoria($idConvocatoria, $lang);

                $this->actualizarPlazaAdjudicada(
                    $idConvocatoria, $candidatoAdjudicado
                );
               $convocatoria->setPlazaAdjudicada($candidatoAdjudicado);
            }
        } else {
            $data['convocatoria'] = $convocatoria;
            $data['resoluciones'] = null;
            $data['requisitos'] = null;
            $data['meritos'] = null;
            $data['lcandidato'] = null;
            $data['ltribunal'] = null;
            $data['aprobacionr'] = null;
            $data['aprobacionm'] = null;
            $data['lvaloraciones'] = null;
        }

        $this->load->view('FormularioGestionConvocatoria.php', $data);
    }

    public function actualizarConvocatoria($convocatoria, $lang)
    {
        $dbRepository = new DBConvocatoriaRepository();

        if ($convocatoria) {
            if ($convocatoria->getIdconvocatoria()) {
                $lConvocatorias = call_user_func([
                    $dbRepository, 'actualizarConvocatoria',
                ], $convocatoria);
            } else {
                $lConvocatorias = call_user_func([
                    $dbRepository, 'nuevaConvocatoria',
                ], $convocatoria);
            }
        }

        if (is_array($lConvocatorias)) {
            $lConvocatorias = reset($lConvocatorias);
            $idConvocatoria = $lConvocatorias->getIdconvocatoria();
        } else {
            $idConvocatoria = $lConvocatorias->getIdconvocatoria();
        }

        //$this->listarConvocatoriasAdmin($lang);
        $this->modificarConvocatoria($idConvocatoria, $lang);
    }

    public function detalleConvocatoria($idConvocatoria, $lang, $idCandidatoWP)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $convocatoria = call_user_func([
            $dbRepository, 'obtenerConvocatorias',
        ], $lang, $idConvocatoria);

        if (is_array($convocatoria)) {
            $convocatoria = reset($convocatoria);
            $dbRepositoryResoluciones =
                new DBConvocatoriaResolucionRepository();
            $lresoluciones = call_user_func([
                $dbRepositoryResoluciones, 'obtenerResoluciones',
            ], $lang, $convocatoria->getIdconvocatoria());

            $dbRepository2 = new DBCandidatoRepository();
            $candidato1 = call_user_func([
                $dbRepository2, 'obtenerCandidato',
            ], $lang, $idCandidatoWP);
            if (is_array($candidato1)) {
                $candidato1 = reset($candidato1);
            }
            if (is_object($candidato1)) {
                $dbRepository1 = new DBCandidatoConvocatoriaRepository();
                $lcdtcvt = call_user_func([
                    $dbRepository1, 'obtenerMisCandidaturas',
                ], $lang, $candidato1->getIdcandidato());
            } else {
                $lcdtcvt = null;
            }

        }
        $data['convocatoria'] = $convocatoria;
        $data['candidatoWP'] = $idCandidatoWP;
        $data['resoluciones'] = $lresoluciones;
        $data['lconvocatorias'] = $lcdtcvt;

        $this->load->view('DetalleConvocatoriaView.php', $data);
    }

    public function buscadorConvocatorias($lang)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $convocatoria =
            call_user_func([$dbRepository, 'buscadorConvocatorias'], $lang);

        $this->load->view('ConvocatoriaBuscadorView.php', $convocatoria);
    }

    public function nuevaResolucion($cvtResol, $lang)
    {
        $dbRepository = new DBConvocatoriaResolucionRepository();
        call_user_func([$dbRepository, 'nuevaResolucion'], $cvtResol);

        $this->modificarConvocatoria(($cvtResol->getCodigoconvocatoria())->getIdconvocatoria(), $lang);
    }

    public function quitarResolucion($cvtResol, $lang)
    {
        $dbRepository = new DBConvocatoriaResolucionRepository();
        $cvRsl =
            call_user_func([$dbRepository, 'eliminarResolucion'], $cvtResol);

        if (isset($cvRsl)) {
            $this->modificarConvocatoria($cvRsl, $lang);
        } else {
            $this->listarConvocatorias($lang);
        }
    }

    public function inscripcionConvocatoria(
        $idConvocatoria, $idCandidatoWP, $lang
    ) {
        if ($idConvocatoria) {
            $dbRepository = new DBConvocatoriaRepository();
            $convocatoria = call_user_func([
                $dbRepository, 'obtenerConvocatorias',
            ], $lang, $idConvocatoria);

            if (is_array($convocatoria)) {
                $convocatoria = reset($convocatoria);
            }

            $dbRepository = new DBCandidatoRepository();
            $candidato = call_user_func([
                $dbRepository, 'obtenerCandidato',
            ], $lang, $idCandidatoWP);

            if (is_array($candidato)) {
                $candidato = reset($candidato);
            }

            if (is_object($candidato)) {
                /*$dbRepositoryIdioma = new DBCandidatoIdiomaRepository();
                $lidiomas = call_user_func(array($dbRepositoryIdioma, 'obtenerIdiomas'), $lang, $candidato->getIdcandidato());

                $dbRepositoryPerfil = new DBCandidatoPerfilRepository();
                $lperfil = call_user_func(array($dbRepositoryPerfil, 'obtenerPerfiles'), $lang, $candidato->getIdcandidato());
                */
                $dbRepositoryRequisitos =
                    new DBConvocatoriaRequisitoRepository();
                $lrequisitos = call_user_func([
                    $dbRepositoryRequisitos, 'obtenerRequisitos',
                ], $lang, $idConvocatoria);

                $dbRepositoryMeritos = new DBConvocatoriaMeritoRepository();
                $lmeritos = call_user_func([
                    $dbRepositoryMeritos, 'obtenerMeritos',
                ], $lang, $idConvocatoria);

                $data['convocatoria'] = $convocatoria;
                $data['candidato'] = $candidato;
                $data['requisitos'] = $lrequisitos;
                $data['meritos'] = $lmeritos;
                //$data['listaidiomas'] = $lidiomas;
                //$data['listaperfiles'] = $lperfil;
            } else {
                $data['convocatoria'] = $convocatoria;
                $data['candidato'] = null;
                $data['requisitos'] = null;
                $data['meritos'] = null;
                //$data['listaidiomas'] = null;
                //$data['listaperfiles'] = null;
            }

            $this->load->view('FormularioInscripcionConvocatoriaView.php', $data);
        } else //Candidatura espontanea
        {
            $dbRepository = new DBCandidatoRepository();
            $candidato = call_user_func([
                $dbRepository, 'obtenerCandidato',
            ], $lang, $idCandidatoWP);

            if (is_array($candidato)) {
                $candidato = reset($candidato);
            }

            if (is_object($candidato)) {
                $data['convocatoria'] = null;
                $data['candidato'] = $candidato;
            } else {
                $data['convocatoria'] = null;
                $data['candidato'] = null;
            }

            $this->load->view('FormularioInscripcionConvocatoriaEspontaneaView.php', $data);
        }
    }

    public function insertarCandidatoConvocatoria(
        $cndcvt, $idCandidatoWP, $lang
    ) {
        //Buscar el candidato en funcion del idWP
        //asignarle el codigocandidato que le corresponde
        //insertar en bbdd el objeto $cndcvt
        $dbRepository = new DBCandidatoRepository();
        $candidato = call_user_func([
            $dbRepository, 'obtenerCandidato',
        ], $lang, $idCandidatoWP);

        if (is_array($candidato)) {
            $candidato = reset($candidato);
        }
        if (is_object($candidato)) {
            $cndcvt->setCodigocandidato($candidato->getIdcandidato());

            $dbRepositoryCndcvt = new DBCandidatoConvocatoriaRepository();
            $result = call_user_func([
                $dbRepositoryCndcvt, 'nuevoCandidatoConvocatoria',
            ], $cndcvt);
        }
        /*$esmuevo = true;
        if(isset($result) && $result == -1)
        {
            $esmuevo = false;
        }*/

        $this->obtenerMisCandidaturas($idCandidatoWP, $lang, $result);
    }

    public function insertarEntrevista(
        $idCandidato, $idConvocatoria, $entrevista
    ) {

        $dbRepository = new DBCandidatoConvocatoriaRepository();
        call_user_func([
            $dbRepository, 'insertarEntrevista',
        ], $idCandidato, $idConvocatoria, $entrevista);

    }

    public function actualizarRequisitosSuperados(
        $idCandidato, $idConvocatoria, $reqaprobados
    ) {

        $dbRepository = new DBCandidatoConvocatoriaRepository();
        call_user_func([
            $dbRepository, 'actualizarRequisitosSuperados',
        ], $idCandidato, $idConvocatoria, $reqaprobados);

    }

    public function actualizarExamensuperado(
        $idCandidato, $idConvocatoria, $reqaprobados
    ) {

        $dbRepository = new DBCandidatoConvocatoriaRepository();
        call_user_func([
            $dbRepository, 'actualizarExamensuperado',
        ], $idCandidato, $idConvocatoria, $reqaprobados);

    }

    public function ImpugnarRequisitos($idCandidato, $idConvocatoria)
    {

        $dbRepository = new DBCandidatoConvocatoriaRepository();
        call_user_func([
            $dbRepository, 'ImpugnarRequisitos',
        ], $idCandidato, $idConvocatoria);

    }

    public function ImpugnarMeritos($idCandidato, $idConvocatoria)
    {

        $dbRepository = new DBCandidatoConvocatoriaRepository();
        call_user_func([
            $dbRepository, 'ImpugnarMeritos',
        ], $idCandidato, $idConvocatoria);

    }

    public function obtenerMisCandidaturas($idCandidatoWP, $lang, $esNuevo)
    {
        $dbRepository = new DBCandidatoRepository();
        $candidato = call_user_func([
            $dbRepository, 'obtenerCandidato',
        ], $lang, $idCandidatoWP);

        if (is_array($candidato)) {
            $candidato = reset($candidato);
        }

        if (is_object($candidato)) {
            $dbRepository = new DBCandidatoConvocatoriaRepository();
            $lcdtcvt = call_user_func([
                $dbRepository, 'obtenerMisCandidaturas',
            ], $lang, $candidato->getIdcandidato());

            $data['lang'] = $lang;
            $data['candidato'] = $candidato;
            $data['lconvocatorias'] = $lcdtcvt;
            $data['esnuevo'] = $esNuevo;
        } else {
            $candidato = new DboCandidato();
            $candidato->setCodigousuariowp($idCandidatoWP);

            $data['lang'] = $lang;
            $data['candidato'] = $candidato;
            $data['lconvocatorias'] = null;
            $data['esnuevo'] = $esNuevo;
        }

        $this->load->view('MisCandidaturasView.php', $data);
    }

    public function insertarCandidaturaEspontanea($cndcvt, $idCandidatoWP, $lang
    ) {
        //Buscar el candidato en funcion del idWP
        //asignarle el codigocandidato que le corresponde
        //insertar en bbdd el objeto $cndcvt
        $dbRepository = new DBCandidatoRepository();
        $candidato = call_user_func([
            $dbRepository, 'obtenerCandidato',
        ], $lang, $idCandidatoWP);

        if (is_array($candidato)) {
            $candidato = reset($candidato);
        }
        if (is_object($candidato)) {
            $cndcvt->setCodigocandidato($candidato->getIdcandidato());

            $dbRepositoryCndcvt = new DBCandidatoConvocatoriaRepository();
            $result = call_user_func([
                $dbRepositoryCndcvt, 'nuevaCandidaturaEspontanea',
            ], $cndcvt);
        }

        $this->obtenerMisCandidaturas($idCandidatoWP, $lang, isset($result)
            ? $result
            : null);
    }

    public function nuevoRequisito($cvtReqs, $lang)
    {
        $dbRepository = new DBConvocatoriaRequisitoRepository();
        $cvRqs = call_user_func([$dbRepository, 'nuevoRequisito'], $cvtReqs);

        $this->modificarConvocatoria(($cvtReqs->getCodigoconvocatoria())->getIdconvocatoria(), $lang);
    }

    public function quitarRequisito($idcvtreq, $lang)
    {
        $dbRepository = new DBConvocatoriaRequisitoRepository();
        $cvrqs =
            call_user_func([$dbRepository, 'eliminarRequisito'], $idcvtreq);

        $this->modificarConvocatoria($cvrqs, $lang);
    }

    public function nuevoMerito($cvtMrt, $lang)
    {
        $dbRepository = new DBConvocatoriaMeritoRepository();
        $cvmrt = call_user_func([$dbRepository, 'nuevoMerito'], $cvtMrt);

        $this->modificarConvocatoria(($cvtMrt->getCodigoconvocatoria())->getIdconvocatoria(), $lang);
    }

    public function quitarMerito($idcvtmrt, $lang)
    {
        $dbRepository = new DBConvocatoriaMeritoRepository();
        $cvmrt = call_user_func([$dbRepository, 'eliminarMerito'], $idcvtmrt);

        $this->modificarConvocatoria($cvmrt, $lang);
    }

    public function obtenerRoles($lang)
    {
        $dbRepository = new DBTribunalConvocatoriaRepository();

        return call_user_func([$dbRepository, 'obtenerRoles'], $lang);
    }

    public function insertarTribunalConvocatoria($cvt, $lcvtTrbnl, $lang)
    {
        //comprobar si ya hay registros para esa cvt, y
        //    1. Ponerles perfil de candidato a los evaluadores (sólo a ellos, otros perfiles como rrhh no tendrian que ponerse como candidato)
        //    2. Ponerlos de baja
        //    3. Insertar los registros del nuevo tribunal
        //    4. Asignar el perfil de evaluador a los que tienen perfil candidato
        $dbRepository = new DBTribunalConvocatoriaRepository();
        //call_user_func(array($dbRepository, 'quitarPerfilesEvaluadoresTribunalConvocatoria'), $cvt);
        call_user_func([$dbRepository, 'borrarTribunalConvocatoria'], $cvt);

        //insertar los resgistros para cada uno de los elementos de la lista $lcvtTrbnl
        if (is_array($lcvtTrbnl)) {
            foreach ($lcvtTrbnl as $cvtTrbnl) {
                call_user_func([
                    $dbRepository, 'insertarTribunalConvocatoria',
                ], $cvt, $cvtTrbnl);
                call_user_func([
                    $dbRepository, 'asignarPerfilEvaluadorTribunalConvocatoria',
                ], $cvt, $cvtTrbnl);
            }
        }
    }

    public function listarValoracionesConvocatoria(
        $lang, $idConvocatoria, $idRequisito, $idMerito, $codigoUsuarioWP
    ) {
        if (isset($codigoUsuarioWP) && is_numeric($codigoUsuarioWP)) {
            $dbRepository =
                new DBTribunalConvocatoriaRepository(); //DBConvocatoriaRepository();
            $ltrbcvt = call_user_func([
                $dbRepository, 'obtenerTribunalConvocatoriasPorUsuarioWP',
            ], $lang, $codigoUsuarioWP);

            if (is_array($ltrbcvt)) {
                $data['lconvocatoria'] = [];

                foreach ($ltrbcvt as $trbcvt) {
                    array_push($data['lconvocatoria'], $trbcvt->getCodigoconvocatoria());
                }
            }

            if (!isset($idConvocatoria) || $idConvocatoria == null) {
                if (isset($data['lconvocatoria'])
                    && $data['lconvocatoria'] != null) {
                    if (is_array($data['lconvocatoria'])
                        && count($data['lconvocatoria']) > 0
                        && is_object(reset($data['lconvocatoria']))) {
                        //$convocatoria = call_user_func(array($dbRepository, 'obtenerConvocatorias'), $lang, reset($data['lconvocatoria'])->getIdconvocatoria());
                        $convocatoria = reset($data['lconvocatoria']);

                        $data['requisitos'] =
                            $this->obtenerRequisitosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                        $data['meritos'] =
                            $this->obtenerMeritosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                        $data['convocatoria'] = $convocatoria;
                        $data['lcandidato'] =
                            $this->obtenerCandidatosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                    } else {
                        $data['requisitos'] = null;
                        $data['meritos'] = null;
                        $data['convocatoria'] = null;
                        $data['lcandidato'] = null;
                    }
                } else {
                    $data['requisitos'] = null;
                    $data['meritos'] = null;
                    $data['convocatoria'] = null;
                    $data['lcandidato'] = null;
                }
            } else {
                $dbRepository = new DBConvocatoriaRepository();
                $convocatoria = call_user_func([
                    $dbRepository, 'obtenerConvocatorias',
                ], $lang, $idConvocatoria);

                if (is_array($convocatoria)) {
                    $convocatoria = reset($convocatoria);
                }
                $data['convocatoria'] = $convocatoria;
                $data['requisitos'] =
                    $this->obtenerRequisitosConvocatoria($lang, $idConvocatoria);
                $data['meritos'] =
                    $this->obtenerMeritosConvocatoria($lang, $idConvocatoria);
                $data['lcandidato'] =
                    $this->obtenerCandidatosConvocatoria($lang, $idConvocatoria);
            }

            //Obtener las valoraciones
            if ($data['convocatoria'] != null
                && ($data['requisitos'] != null
                    || $data['meritos'] != null)) {
                if (!isset($idRequisito) && $idRequisito == null
                    && !isset($idMerito)
                    && $idMerito) {
                    if (isset($data['convocatoria'])
                        && $data['convocatoria'] != null) {
                        if (is_array($data['requisitos'])
                            && count($data['requisitos']) > 0
                            && is_object(reset($data['requisitos']))) {
                            $data['lvaloraciones'] =
                                $this->obtenerValoracionesCandidatos($lang, $data['convocatoria']->getIdconvocatoria(), $data['requisitos']->getIdconvocatoriarequisito(), null);
                        } else {
                            if (is_array($data['meritos'])
                                && count($data['meritos']) > 0
                                && is_object(reset($data['meritos']))) {
                                $data['lvaloraciones'] =
                                    $this->obtenerValoracionesCandidatos($lang, $data['convocatoria']->getIdconvocatoria(), null, $data['meritos']->getIdconvocatoriamerito());
                            } else {
                                $data['lvaloraciones'] = null;
                            }
                        }
                    }
                } else {
                    if (isset($idRequisito) && $idRequisito != null) {
                        $data['lvaloraciones'] =
                            $this->obtenerValoracionesCandidatos($lang, $data['convocatoria']->getIdconvocatoria(), $idRequisito, null);
                    } else {
                        if (isset($idMerito) && $idMerito != null) {
                            $data['lvaloraciones'] =
                                $this->obtenerValoracionesCandidatos($lang, $data['convocatoria']->getIdconvocatoria(), null, $idMerito);
                        }
                    }
                }
            }

            $this->load->view('TribunalValoracionView.php', $data);
        }
    }

    public function GestionarValoracionesConvocatoria(
        $lang, $idConvocatoria, $idRequisito, $idMerito, $codigoUsuarioWP
    ) {
        if (isset($codigoUsuarioWP) && is_numeric($codigoUsuarioWP)) {
            $dbRepository =
                new DBTribunalConvocatoriaRepository(); //DBConvocatoriaRepository();
            $ltrbcvt = call_user_func([
                $dbRepository, 'obtenerTribunalConvocatoriasPorUsuarioWP',
            ], $lang, $codigoUsuarioWP);

            if (is_array($ltrbcvt)) {
                $data['lconvocatoria'] = [];

                foreach ($ltrbcvt as $trbcvt) {
                    array_push($data['lconvocatoria'], $trbcvt->getCodigoconvocatoria());
                }
            }

            if (!isset($idConvocatoria) || $idConvocatoria == null) {
                if (isset($data['lconvocatoria'])
                    && $data['lconvocatoria'] != null) {
                    if (is_array($data['lconvocatoria'])
                        && count($data['lconvocatoria']) > 0
                        && is_object(reset($data['lconvocatoria']))) {
                        //$convocatoria = call_user_func(array($dbRepository, 'obtenerConvocatorias'), $lang, reset($data['lconvocatoria'])->getIdconvocatoria());
                        $convocatoria = reset($data['lconvocatoria']);

                        $data['requisitos'] =
                            $this->obtenerRequisitosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                        $data['meritos'] =
                            $this->obtenerMeritosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                        $data['convocatoria'] = $convocatoria;
                        $data['lcandidato'] =
                            $this->obtenerCandidatosConvocatoria($lang, $convocatoria->getIdconvocatoria());

                        $dbRepository1 = new DBTribunalConvocatoriaRepository();
                        $data['ltribunal'] = call_user_func([
                            $dbRepository1, 'obtenerTribunal',
                        ], $lang, $convocatoria->getIdconvocatoria());

                        $dbRepository2 =
                            new DBTribunalAprobacionRequisitosRepository();
                        $data['aprobacionr'] = call_user_func([
                            $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                        ], $lang, $convocatoria->getIdconvocatoria());

                        $dbRepository3 =
                            new DBTribunalAprobacionMeritosRepository();
                        $data['aprobacionm'] = call_user_func([
                            $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                        ], $lang, $convocatoria->getIdconvocatoria());

                        $dbRepository4 =
                            new DBTribunalAprobacionExamenRepository();
                        $data['aprobacione'] = call_user_func([
                            $dbRepository4, 'obtenerAprobacionesPorConvocatoria',
                        ], $lang, $convocatoria->getIdconvocatoria());

                    } else {
                        $data['requisitos'] = null;
                        $data['meritos'] = null;
                        $data['convocatoria'] = null;
                        $data['lcandidato'] = null;
                        $data['ltribunal'] = null;
                        $data['aprobacionr'] = null;
                        $data['aprobacionm'] = null;
                        $data['aprobacione'] = null;
                    }
                } else {
                    $data['requisitos'] = null;
                    $data['meritos'] = null;
                    $data['convocatoria'] = null;
                    $data['lcandidato'] = null;
                    $data['ltribunal'] = null;
                    $data['aprobacionr'] = null;
                    $data['aprobacionm'] = null;
                    $data['aprobacione'] = null;
                }
            } else {
                $dbRepository = new DBConvocatoriaRepository();
                $convocatoria = call_user_func([
                    $dbRepository, 'obtenerConvocatorias',
                ], $lang, $idConvocatoria);

                if (is_array($convocatoria)) {
                    $convocatoria = reset($convocatoria);
                }
                $data['convocatoria'] = $convocatoria;
                $data['requisitos'] =
                    $this->obtenerRequisitosConvocatoria($lang, $idConvocatoria);
                $data['meritos'] =
                    $this->obtenerMeritosConvocatoria($lang, $idConvocatoria);
                $data['lcandidato'] =
                    $this->obtenerCandidatosConvocatoria($lang, $idConvocatoria);

                $dbRepository1 = new DBTribunalConvocatoriaRepository();
                $data['ltribunal'] = call_user_func([
                    $dbRepository1, 'obtenerTribunal',
                ], $lang, $idConvocatoria);

                $dbRepository2 = new DBTribunalAprobacionRequisitosRepository();
                $data['aprobacionr'] = call_user_func([
                    $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $idConvocatoria);

                $dbRepository3 = new DBTribunalAprobacionMeritosRepository();
                $data['aprobacionm'] = call_user_func([
                    $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $idConvocatoria);

                $dbRepository4 = new DBTribunalAprobacionExamenRepository();
                $data['aprobacione'] = call_user_func([
                    $dbRepository4, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $idConvocatoria);

            }

            //Obtener las valoraciones
            if ($data['convocatoria'] != null
                && ($data['requisitos'] != null
                    || $data['meritos'] != null)) {
                $data['lvaloraciones'] =
                    $this->obtenerTodasValoracionesCandidatos($lang, $data['convocatoria']->getIdconvocatoria());
            }

            $this->load->view('GestionarValoracionTribunalView.php', $data);
        }
    }

    public function AprobacionesRequisisto(
        $lang, $idConvocatoria, $codigoUsuarioWP
    ) {
        if (isset($codigoUsuarioWP) && is_numeric($codigoUsuarioWP)) {
            $dbRepository =
                new DBTribunalConvocatoriaRepository(); //DBConvocatoriaRepository();
            $ltrbcvt = call_user_func([
                $dbRepository, 'obtenerTribunalConvocatoriasPorUsuarioWP',
            ], $lang, $codigoUsuarioWP);

            if (is_array($ltrbcvt)) {
                $data['lconvocatoria'] = [];

                foreach ($ltrbcvt as $trbcvt) {
                    array_push($data['lconvocatoria'], $trbcvt->getCodigoconvocatoria());
                }
            }

            if (!isset($idConvocatoria) || $idConvocatoria == null) {
                if (isset($data['lconvocatoria'])
                    && $data['lconvocatoria'] != null) {
                    if (is_array($data['lconvocatoria'])
                        && count($data['lconvocatoria']) > 0
                        && is_object(reset($data['lconvocatoria']))) {
                        //$convocatoria = call_user_func(array($dbRepository, 'obtenerConvocatorias'), $lang, reset($data['lconvocatoria'])->getIdconvocatoria());
                        $convocatoria = reset($data['lconvocatoria']);

                        $data['requisitos'] =
                            $this->obtenerRequisitosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                        $data['convocatoria'] = $convocatoria;
                        $data['lcandidato'] =
                            $this->obtenerCandidatosConvocatoria($lang, $convocatoria->getIdconvocatoria());

                        $dbRepository1 = new DBTribunalConvocatoriaRepository();
                        $data['ltribunal'] = call_user_func([
                            $dbRepository1, 'obtenerTribunal',
                        ], $lang, $convocatoria->getIdconvocatoria());

                        $dbRepository2 =
                            new DBTribunalAprobacionRequisitosRepository();
                        $data['aprobacionr'] = call_user_func([
                            $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                        ], $lang, $convocatoria->getIdconvocatoria());

                    } else {
                        $data['requisitos'] = null;
                        $data['convocatoria'] = null;
                        $data['lcandidato'] = null;
                        $data['ltribunal'] = null;
                        $data['aprobacionr'] = null;
                    }
                } else {
                    $data['requisitos'] = null;
                    $data['convocatoria'] = null;
                    $data['lcandidato'] = null;
                    $data['ltribunal'] = null;
                    $data['aprobacionr'] = null;
                }
            } else {
                $dbRepository = new DBConvocatoriaRepository();
                $convocatoria = call_user_func([
                    $dbRepository, 'obtenerConvocatorias',
                ], $lang, $idConvocatoria);

                if (is_array($convocatoria)) {
                    $convocatoria = reset($convocatoria);
                }
                $data['convocatoria'] = $convocatoria;
                $data['requisitos'] =
                    $this->obtenerRequisitosConvocatoria($lang, $idConvocatoria);
                $data['lcandidato'] =
                    $this->obtenerCandidatosConvocatoria($lang, $idConvocatoria);

                $dbRepository1 = new DBTribunalConvocatoriaRepository();
                $data['ltribunal'] = call_user_func([
                    $dbRepository1, 'obtenerTribunal',
                ], $lang, $idConvocatoria);

                $dbRepository2 = new DBTribunalAprobacionRequisitosRepository();
                $data['aprobacionr'] = call_user_func([
                    $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $convocatoria->getIdconvocatoria());
            }

            //Obtener las valoraciones
            if ($data['convocatoria'] != null
                && ($data['requisitos'] != null
                    || $data['meritos'] != null)) {

                $data['lvaloraciones'] =
                    $this->obtenerTodasValoracionesCandidatos($lang, $data['convocatoria']->getIdconvocatoria());

            }

            $this->load->view('AprobarActaRequisitos.php', $data);
        }
    }

    public function AprobacionesMeritos($lang, $idConvocatoria, $codigoUsuarioWP
    ) {
        if (isset($codigoUsuarioWP) && is_numeric($codigoUsuarioWP)) {
            $dbRepository =
                new DBTribunalConvocatoriaRepository(); //DBConvocatoriaRepository();
            $ltrbcvt = call_user_func([
                $dbRepository, 'obtenerTribunalConvocatoriasPorUsuarioWP',
            ], $lang, $codigoUsuarioWP);

            if (is_array($ltrbcvt)) {
                $data['lconvocatoria'] = [];

                foreach ($ltrbcvt as $trbcvt) {
                    array_push($data['lconvocatoria'], $trbcvt->getCodigoconvocatoria());
                }
            }

            if (!isset($idConvocatoria) || $idConvocatoria == null) {
                if (isset($data['lconvocatoria'])
                    && $data['lconvocatoria'] != null) {
                    if (is_array($data['lconvocatoria'])
                        && count($data['lconvocatoria']) > 0
                        && is_object(reset($data['lconvocatoria']))) {
                        //$convocatoria = call_user_func(array($dbRepository, 'obtenerConvocatorias'), $lang, reset($data['lconvocatoria'])->getIdconvocatoria());
                        $convocatoria = reset($data['lconvocatoria']);

                        $data['meritos'] =
                            $this->obtenerMeritosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                        $data['convocatoria'] = $convocatoria;
                        $data['lcandidato'] =
                            $this->obtenerCandidatosConvocatoria($lang, $convocatoria->getIdconvocatoria());

                        $dbRepository1 = new DBTribunalConvocatoriaRepository();
                        $data['ltribunal'] = call_user_func([
                            $dbRepository1, 'obtenerTribunal',
                        ], $lang, $convocatoria->getIdconvocatoria());

                        $dbRepository2 =
                            new DBTribunalAprobacionMeritosRepository();
                        $data['aprobacionm'] = call_user_func([
                            $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                        ], $lang, $convocatoria->getIdconvocatoria());

                        $dbRepository3 =
                            new DBTribunalAprobacionRequisitosRepository();
                        $data['aprobacionr'] = call_user_func([
                            $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                        ], $lang, $convocatoria->getIdconvocatoria());

                    } else {
                        $data['meritos'] = null;
                        $data['convocatoria'] = null;
                        $data['lcandidato'] = null;
                        $data['ltribunal'] = null;
                        $data['aprobacionm'] = null;
                        $data['aprobacionr'] = null;
                    }
                } else {
                    $data['meritos'] = null;
                    $data['convocatoria'] = null;
                    $data['lcandidato'] = null;
                    $data['ltribunal'] = null;
                    $data['aprobacionm'] = null;
                    $data['aprobacionr'] = null;
                }
            } else {
                $dbRepository = new DBConvocatoriaRepository();
                $convocatoria = call_user_func([
                    $dbRepository, 'obtenerConvocatorias',
                ], $lang, $idConvocatoria);

                if (is_array($convocatoria)) {
                    $convocatoria = reset($convocatoria);
                }
                $data['convocatoria'] = $convocatoria;
                $data['meritos'] =
                    $this->obtenerMeritosConvocatoria($lang, $idConvocatoria);
                $data['lcandidato'] =
                    $this->obtenerCandidatosConvocatoria($lang, $idConvocatoria);

                $dbRepository1 = new DBTribunalConvocatoriaRepository();
                $data['ltribunal'] = call_user_func([
                    $dbRepository1, 'obtenerTribunal',
                ], $lang, $idConvocatoria);

                $dbRepository2 = new DBTribunalAprobacionMeritosRepository();
                $data['aprobacionm'] = call_user_func([
                    $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $convocatoria->getIdconvocatoria());

                $dbRepository3 = new DBTribunalAprobacionRequisitosRepository();
                $data['aprobacionr'] = call_user_func([
                    $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $convocatoria->getIdconvocatoria());
            }

            //Obtener las valoraciones

            if ($data['convocatoria'] != null
                && (isset($data['requisitos'])
                    || isset($data['meritos']))) {

                $data['lvaloraciones'] =
                    $this->obtenerTodasValoracionesCandidatos($lang, $data['convocatoria']->getIdconvocatoria());

            }

            $this->load->view('AprobarActaMeritos.php', $data);
        }
    }


    public function AprobacionesExamenes(
        $lang, $idConvocatoria, $codigoUsuarioWP
    ) {
        if (isset($codigoUsuarioWP) && is_numeric($codigoUsuarioWP)) {
            $dbRepository =
                new DBTribunalConvocatoriaRepository(); //DBConvocatoriaRepository();
            $ltrbcvt = call_user_func([
                $dbRepository, 'obtenerTribunalConvocatoriasPorUsuarioWP',
            ], $lang, $codigoUsuarioWP);

            if (is_array($ltrbcvt)) {
                $data['lconvocatoria'] = [];

                foreach ($ltrbcvt as $trbcvt) {
                    array_push($data['lconvocatoria'], $trbcvt->getCodigoconvocatoria());
                }
            }

            if (!isset($idConvocatoria) || $idConvocatoria == null) {
                if (isset($data['lconvocatoria'])
                    && $data['lconvocatoria'] != null) {
                    if (is_array($data['lconvocatoria'])
                        && count($data['lconvocatoria']) > 0
                        && is_object(reset($data['lconvocatoria']))) {
                        //$convocatoria = call_user_func(array($dbRepository, 'obtenerConvocatorias'), $lang, reset($data['lconvocatoria'])->getIdconvocatoria());
                        $convocatoria = reset($data['lconvocatoria']);

                        $data['meritos'] =
                            $this->obtenerMeritosConvocatoria($lang, $convocatoria->getIdconvocatoria());
                        $data['convocatoria'] = $convocatoria;
                        $data['lcandidato'] =
                            $this->obtenerCandidatosConvocatoria($lang, $convocatoria->getIdconvocatoria());

                        $dbRepository1 = new DBTribunalConvocatoriaRepository();
                        $data['ltribunal'] = call_user_func([
                            $dbRepository1, 'obtenerTribunal',
                        ], $lang, $convocatoria->getIdconvocatoria());

                        $dbRepository2 =
                            new DBTribunalAprobacionMeritosRepository();
                        $data['aprobacionm'] = call_user_func([
                            $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                        ], $lang, $convocatoria->getIdconvocatoria());

                        $dbRepository3 =
                            new DBTribunalAprobacionRequisitosRepository();
                        $data['aprobacionr'] = call_user_func([
                            $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                        ], $lang, $convocatoria->getIdconvocatoria());

                        $dbRepository4 =
                            new DBTribunalAprobacionExamenRepository();
                        $data['aprobacione'] = call_user_func([
                            $dbRepository4, 'obtenerAprobacionesPorConvocatoria',
                        ], $lang, $convocatoria->getIdconvocatoria());

                    } else {
                        $data['meritos'] = null;
                        $data['convocatoria'] = null;
                        $data['lcandidato'] = null;
                        $data['ltribunal'] = null;
                        $data['aprobacionm'] = null;
                        $data['aprobacionr'] = null;
                        $data['aprobacione'] = null;
                    }
                } else {
                    $data['meritos'] = null;
                    $data['convocatoria'] = null;
                    $data['lcandidato'] = null;
                    $data['ltribunal'] = null;
                    $data['aprobacionm'] = null;
                    $data['aprobacionr'] = null;
                    $data['aprobacione'] = null;
                }
            } else {
                $dbRepository = new DBConvocatoriaRepository();
                $convocatoria = call_user_func([
                    $dbRepository, 'obtenerConvocatorias',
                ], $lang, $idConvocatoria);

                if (is_array($convocatoria)) {
                    $convocatoria = reset($convocatoria);
                }
                $data['convocatoria'] = $convocatoria;
                $data['meritos'] =
                    $this->obtenerMeritosConvocatoria($lang, $idConvocatoria);
                $data['lcandidato'] =
                    $this->obtenerCandidatosConvocatoria($lang, $idConvocatoria);

                $dbRepository1 = new DBTribunalConvocatoriaRepository();
                $data['ltribunal'] = call_user_func([
                    $dbRepository1, 'obtenerTribunal',
                ], $lang, $idConvocatoria);

                $dbRepository2 = new DBTribunalAprobacionMeritosRepository();
                $data['aprobacionm'] = call_user_func([
                    $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $convocatoria->getIdconvocatoria());

                $dbRepository3 = new DBTribunalAprobacionRequisitosRepository();
                $data['aprobacionr'] = call_user_func([
                    $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $convocatoria->getIdconvocatoria());

                $dbRepository4 = new DBTribunalAprobacionExamenRepository();
                $data['aprobacione'] = call_user_func([
                    $dbRepository4, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $convocatoria->getIdconvocatoria());
            }

            //Obtener las valoraciones

            if ($data['convocatoria'] != null
                && (isset($data['requisitos'])
                    || isset($data['meritos']))) {

                $data['lvaloraciones'] =
                    $this->obtenerTodasValoracionesCandidatos($lang, $data['convocatoria']->getIdconvocatoria());

            }

            $this->load->view('AprobarActaExamen.php', $data);
        }
    }

    public function obtenerRequisitosConvocatoria($lang, $idConvocatoria)
    {
        //Obtener Requisitos
        if (isset($idConvocatoria) && $idConvocatoria != null) {
            $dbRepositoryRequisitos = new DBConvocatoriaRequisitoRepository();
            $lrequisitos = call_user_func([
                $dbRepositoryRequisitos, 'obtenerRequisitos',
            ], $lang, $idConvocatoria);

            $data['requisitos'] = $lrequisitos;
        } else {
            $data['requisitos'] = null;
        }

        return $data['requisitos'];
    }

    public function obtenerMeritosConvocatoria($lang, $idConvocatoria)
    {
        //Obtener Meritos
        if (isset($idConvocatoria) && $idConvocatoria != null) {
            $dbRepositoryMeritos = new DBConvocatoriaMeritoRepository();
            $lmeritos = call_user_func([
                $dbRepositoryMeritos, 'obtenerMeritos',
            ], $lang, $idConvocatoria);

            $data['meritos'] = $lmeritos;
        } else {
            $data['meritos'] = null;
        }

        return $data['meritos'];
    }

    public function obtenerCandidatosConvocatoria($lang, $idConvocatoria)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $data['lconvocatoria'] = call_user_func([
            $dbRepository, 'obtenerConvocatoriasReferencia',
        ], $lang, null);

        if (!isset($idConvocatoria) || $idConvocatoria == null) {
            if (isset($data['lconvocatoria'])
                && $data['lconvocatoria'] != null) {
                if (is_array($data['lconvocatoria'])
                    && count($data['lconvocatoria']) > 0
                    && is_object(reset($data['lconvocatoria']))) {
                    $dbRepository = new DBCandidatoConvocatoriaRepository();
                    $data['lcandidato'] = call_user_func([
                        $dbRepository, 'obtenerCandidatosPorConvocatoria',
                    ], $lang, reset($data['lconvocatoria'])->getIdconvocatoria());
                }
            } else {
                $data['lcandidato'] = null;
            }
        } else {
            $dbRepository = new DBCandidatoConvocatoriaRepository();
            $data['lcandidato'] = call_user_func([
                $dbRepository, 'obtenerCandidatosPorConvocatoria',
            ], $lang, $idConvocatoria);
        }

        return $data['lcandidato'];
    }

    public function obtenerCandidatosConvocatoriaMer($lang, $idConvocatoria)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $data['lconvocatoria'] = call_user_func([
            $dbRepository, 'obtenerConvocatoriasReferencia',
        ], $lang, null);

        if (!isset($idConvocatoria) || $idConvocatoria == null) {
            if (isset($data['lconvocatoria'])
                && $data['lconvocatoria'] != null) {
                if (is_array($data['lconvocatoria'])
                    && count($data['lconvocatoria']) > 0
                    && is_object(reset($data['lconvocatoria']))) {
                    $dbRepository = new DBCandidatoConvocatoriaRepository();
                    $data['lcandidato'] = call_user_func([
                        $dbRepository, 'obtenerCandidatosPorConvocatoriaMer',
                    ], $lang, reset($data['lconvocatoria'])->getIdconvocatoria());
                }
            } else {
                $data['lcandidato'] = null;
            }
        } else {
            $dbRepository = new DBCandidatoConvocatoriaRepository();
            $data['lcandidato'] = call_user_func([
                $dbRepository, 'obtenerCandidatosPorConvocatoriaMer',
            ], $lang, $idConvocatoria);
        }

        return $data['lcandidato'];
    }

    public function obtenerCandidatosConvocatoriaExam($lang, $idConvocatoria)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $data['lconvocatoria'] = call_user_func(
            [$dbRepository, 'obtenerConvocatoriasReferencia',], $lang, null
        );

        if (!isset($idConvocatoria) || $idConvocatoria == null) {
            if (isset($data['lconvocatoria'])
                && $data['lconvocatoria'] != null) {
                if (
                    is_array($data['lconvocatoria'])
                    && count($data['lconvocatoria']) > 0
                    && is_object(reset($data['lconvocatoria']))
                ) {
                    $dbRepository = new DBCandidatoConvocatoriaRepository();
                    $data['lcandidato'] = call_user_func(
                        [$dbRepository, 'obtenerCandidatosPorConvocatoriaExam',],
                        $lang,
                        reset($data['lconvocatoria'])->getIdconvocatoria()
                    );
                }
            } else {
                $data['lcandidato'] = null;
            }
        } else {
            $dbRepository = new DBCandidatoConvocatoriaRepository();
            $data['lcandidato'] = call_user_func(
                [$dbRepository, 'obtenerCandidatosPorConvocatoriaExam',],
                $lang,
                $idConvocatoria
            );
        }

        return $data['lcandidato'];
    }

    public function obtenerValoracionesCandidatos(
        $lang, $idConvocatoria, $idRequisito, $idMerito
    ) {
        $dbRepository = new DBTribunalValoracionRepository();
        $lvaloraciones = call_user_func(
            [$dbRepository, 'obtenerTribunalValoracion',],
            $lang,
            $idConvocatoria,
            $idRequisito,
            $idMerito
        );

        return $lvaloraciones;
    }

    public function obtenerTodasValoracionesCandidatos($lang, $idConvocatoria)
    {
        $dbRepository = new DBTribunalValoracionRepository();

        return call_user_func(
            [$dbRepository, 'obtenerValoracionesTribunalConvocatoria',],
            $lang,
            $idConvocatoria
        );
    }

    public function insertarTribunalValoracion($tribunalvaloracion, $lang)
    {
        if ($tribunalvaloracion->getCodigoconvocatoria() != null) {
            $dbRepository = new DBTribunalValoracionRepository();
            call_user_func(
                [$dbRepository, 'insertarTribunalValoracion',], $tribunalvaloracion
            );
        }
    }

    public function insertarAprobacionRequisitos($tribunalvaloracion, $lang)
    {
        if ($tribunalvaloracion->getCodigoconvocatoria() != null) {
            $dbRepository = new DBTribunalAprobacionRequisitosRepository();
            call_user_func(
                [$dbRepository, 'insertarAprobaciones',], $tribunalvaloracion
            );
        }
    }

    public function insertarAprobacionMeritos($tribunalvaloracion, $lang)
    {
        if ($tribunalvaloracion->getCodigoconvocatoria() != null) {
            $dbRepository = new DBTribunalAprobacionMeritosRepository();
            call_user_func(
                [$dbRepository, 'insertarAprobaciones',], $tribunalvaloracion
            );
        }
    }

    public function insertarAprobacionExamen($tribunalvaloracion, $lang)
    {
        if ($tribunalvaloracion->getCodigoconvocatoria() != null) {
            $dbRepository = new DBTribunalAprobacionExamenRepository();
            call_user_func(
                [$dbRepository, 'insertarAprobaciones',], $tribunalvaloracion
            );
        }
    }

    public function cambiarEstadoConvocatoria($idConvocatoria, $idEstado)
    {
        if (current_user_can('administrator')) {
            $dbRepository = new DBConvocatoriaRepository();
            call_user_func(
                [$dbRepository, 'cambiarEstadoConvocatoria',],
                $idConvocatoria,
                $idEstado
            );
        }
    }

    public function insertarFechaExamen($idConvocatoria, $fecha)
    {
        if (current_user_can('administrator')) {
            $dbRepository = new DBConvocatoriaRepository();
            call_user_func(
                [$dbRepository, 'insertarFechaExamen',], $idConvocatoria, $fecha
            );
        }
    }

    public function insertarFechaResReq($idConvocatoria, $fecha)
    {
        if (current_user_can('administrator')) {
            $dbRepository = new DBConvocatoriaRepository();
            call_user_func(
                [$dbRepository, 'insertarFechaResReq',], $idConvocatoria, $fecha
            );
        }
    }

    public function insertarFechaResExamen($idConvocatoria, $fecha)
    {
        if (current_user_can('administrator')) {
            $dbRepository = new DBConvocatoriaRepository();
            call_user_func(
                [$dbRepository, 'insertarFechaResExamen',], $idConvocatoria, $fecha
            );
        }
    }

    public function insertarFechaResFinal($idConvocatoria, $fecha)
    {
        if (current_user_can('administrator')) {
            $dbRepository = new DBConvocatoriaRepository();
            call_user_func(
                [$dbRepository, 'insertarFechaResFinal',], $idConvocatoria, $fecha
            );
        }
    }

    public function insertarImpugnacion($impugnacion, $lang)
    {
        if ($impugnacion->getCodigoconvocatoria() != null) {
            $dbRepository = new DBImpugnacionRepository();
            call_user_func(
                [$dbRepository, 'insertarImpugnacion',], $impugnacion
            );
        }
    }

    public function insertarImpugnacionDoc($impugnaciondoc, $lang)
    {
        if ($impugnaciondoc->getCodigoconvocatoria() != null) {
            $dbRepository = new DBImpugnacionDocRepository();
            call_user_func(
                [$dbRepository, 'insertarImpugnacionDoc',], $impugnaciondoc
            );
        }
    }

    public function removeImpugnacionDoc($idimpugnaciondoc)
    {
        $dbRepository = new DBImpugnacionDocRepository();
        call_user_func(
            [$dbRepository, 'removeImpugnacionDoc',], $idimpugnaciondoc
        );
    }

    public function modificarEstados($todaynow, $lang)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $lConvocatorias = call_user_func(
            [$dbRepository, 'obtenerConvocatoriasAbiertas',], $lang
        );

        if (is_array($lConvocatorias)) {
            foreach ($lConvocatorias as $lconvocatoria) {
                if ($lconvocatoria->getFechafin() < $todaynow) {
                    call_user_func(
                        [$dbRepository, 'cambiarEstadoConvocatoria',],
                        $lconvocatoria->getIdconvocatoria(),
                        2
                    );

                    $dbRepository1 = new DBTribunalConvocatoriaRepository();
                    $ltribunal = call_user_func(
                        [$dbRepository1, 'obtenerTribunal',],
                        $lang,
                        $lconvocatoria->getIdconvocatoria()
                    );

                    if (is_array($ltribunal)) {
                        $tribunalemail = '';
                        foreach ($ltribunal as $miembrotribunal) {
                            if (!$miembrotribunal->getEssuplente()) {
                                if (!user_can(($miembrotribunal->getCodigousuariowp())->getId(), 'administrator')) {
                                    $tribunalemail .= ($miembrotribunal->getCodigousuariowp())->getUserEmail()
                                                      . ',';
                                }
                            }
                        }
                        $desc = $lconvocatoria->getReferencia() . ' ';
                        $desc .= $lconvocatoria->getDescripcion;

                        sendEmailTribunal($tribunalemail, 'startReqs', $desc);
                    }
                }
            }
        }
    }

    public function candidatePersolInfoReport($lang)
    {
        $dbRepository = new DBCandidatoRepository();
        $lcandidato = call_user_func(
            [$dbRepository, 'obtenerCandidato'], $lang, null
        );
        $data = [];

        if (is_array($lcandidato)) {
            foreach ($lcandidato as $candidato) {
                //idiomas
                $dbRepositoryIdioma = new DBCandidatoIdiomaRepository();
                $lidioma = call_user_func([
                    $dbRepositoryIdioma, 'obtenerIdiomas',
                ], $lang, $candidato->getIdcandidato());
                $arrayIdioma = [];

                if (is_array($lidioma)) {
                    foreach ($lidioma as $idioma) {
                        array_push(
                            $arrayIdioma, [
                                'nombre' => !empty($idioma->getCodigoidiomas())
                                    ? ($idioma->getCodigoidiomas())->getIdioma()
                                    : null,
                                'nivel' => !empty($idioma->getCodigonivelidioma())
                                    ? ($idioma->getCodigonivelidioma())->getNivelidioma()
                                    : null,
                            ]
                        );
                    }
                }
                // perfiles
                $dbRepositoryPerfil = new DBCandidatoPerfilRepository();
                $lperfil = call_user_func([
                    $dbRepositoryPerfil, 'obtenerPerfiles',
                ], $lang, $candidato->getIdcandidato());

                $arrayPerfil = [];

                if (is_array($lperfil)) {
                    foreach ($lperfil as $perfil) {
                        array_push(
                            $arrayPerfil, [
                                'nombreperfil' => !empty($perfil->getCodigoperfil())
                                    ? ($perfil->getCodigoperfil())->getPerfil()
                                    : null,
                                'nombreexperiencia' => !empty($perfil->getCodigorangoexperiencia())
                                    ? ($perfil->getCodigorangoexperiencia())->getRangoexperiencia()
                                    : null,
                            ]
                        );
                    }
                }

                // convocatorias
                $dbRepositoryCandidatoConvocatoria =
                    new DBCandidatoConvocatoriaRepository();
                $lconvocatoria = call_user_func([
                    $dbRepositoryCandidatoConvocatoria,
                    'obtenerConvocatoriasPorCandidatos',
                ], $lang, $candidato->getIdcandidato());

                $arrayConvocatoria = [];

                if (is_array($lconvocatoria)) {
                    foreach ($lconvocatoria as $convocatoria) {
                        array_push(
                            $arrayConvocatoria, [
                                'refdescconvocatoria' => !empty($convocatoria->getCodigoconvocatoria())
                                    ? ($convocatoria->getCodigoconvocatoria())->getReferencia()
                                    : null,
                                'descconvocatoria' => !empty($convocatoria->getCodigoconvocatoria())
                                    ? ($convocatoria->getCodigoconvocatoria())->getDescripcion()
                                    : null,
                            ]
                        );
                    }
                }

                $user_info =
                    get_userdata(($candidato->getCodigousuariowp())->getId());
                $user_email = $user_info->user_email;
                $candidatoformateado = [
                    'id' => ($candidato->getCodigousuariowp())->getId(),
                    'nombre' => $candidato->getNombre() . ' '
                                . $candidato->getApellido1() . ' '
                                . $candidato->getApellido2(),
                    'dni' => $candidato->getDocumento(),
                    'correo' => $user_email,
                    'edad' => $candidato->getFechanacimiento(),
                    'area' => !empty($candidato->getCodigoarea())
                        ? ($candidato->getCodigoarea())->getArea()
                        : null,
                    'titulacion' => !empty($candidato->getCodigotitulacion())
                        ? ($candidato->getCodigotitulacion())->getTitulacion()
                        : null,
                    'materia' => !empty($candidato->getCodigomateria())
                        ? ($candidato->getCodigomateria())->getMateria()
                        : null,
                    'master' => $candidato->getDescripcionmaster(),
                    'especializacion' => $candidato->getDescripcionespecializacion(),
                    'cv' => $candidato->getRutacv(),
                    'cp' => $candidato->getRutacp(),
                    'idiomas' => $arrayIdioma,
                    'perfiles' => $arrayPerfil,
                    'convocatorias' => $arrayConvocatoria,
                ];
                array_push($data, $candidatoformateado);
            }
        }
        $this->load->view('reports/candidatePersolInfo.php', $data);
    }

    public function candidateAccessInfoReport($lang)
    {
        $dbRepository = new DBCandidatoRepository();
        $lcandidato = call_user_func(
            [$dbRepository, 'obtenerCandidato'], $lang, null
        );
        $data = [];

        if (is_array($lcandidato)) {
            foreach ($lcandidato as $candidato) {
                $user_info =
                    get_userdata(($candidato->getCodigousuariowp())->getId());
                $user_email = $user_info->user_email;
                $candidatoformateado = [
                    'nombre' => $candidato->getNombre() . ' '
                                . $candidato->getApellido1() . ' '
                                . $candidato->getApellido2(),
                    'dni' => $candidato->getDocumento(),
                    'correo' => $user_email,
                    'motivacion' => $candidato->getMotivacion(),
                    'seleccion' => $candidato->getHaparticipadoanteriormente(),
                    'conocido' => $candidato->getComoconocido(),
                    'masinfo' => $candidato->getAceptarecibiremails(),
                ];
                array_push($data, $candidatoformateado);
            }
        }
        $this->load->view('reports/candidateAcessInfo.php', $data);
    }

    public function callReport($lang)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $lConvocatorias = call_user_func([
            $dbRepository, 'obtenerConvocatorias',
        ], $lang, null, false);
        $data = [];

        if (is_array($lConvocatorias)) {
            foreach ($lConvocatorias as $convocatoria) {
                $idConvocatoria = $convocatoria->getIdconvocatoria();

                if (is_array($convocatoria)) {
                    $convocatoria = reset($convocatoria);
                }
                $actas['convocatoria'] = $convocatoria;
                $actas['convid'] = $idConvocatoria;
                $actas['requisitos'] =
                    $this->obtenerRequisitosConvocatoria($lang, $idConvocatoria);
                $actas['meritos'] =
                    $this->obtenerMeritosConvocatoria($lang, $idConvocatoria);
                $actas['lcandidato'] =
                    $this->obtenerCandidatosConvocatoria($lang, $idConvocatoria);

                $dbRepository1 = new DBTribunalConvocatoriaRepository();
                $actas['ltribunal'] = call_user_func([
                    $dbRepository1, 'obtenerTribunal',
                ], $lang, $idConvocatoria);

                $dbRepository2 = new DBTribunalAprobacionRequisitosRepository();
                $actas['aprobacionr'] = call_user_func([
                    $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $idConvocatoria);

                $dbRepository3 = new DBTribunalAprobacionMeritosRepository();
                $actas['aprobacionm'] = call_user_func([
                    $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $idConvocatoria);

                $dbRepository4 = new DBTribunalAprobacionExamenRepository();
                $actas['aprobacione'] = call_user_func([
                    $dbRepository4, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $idConvocatoria);

                if ($actas['convocatoria'] != null
                    && ($actas['requisitos'] != null
                        || $actas['meritos'] != null)) {
                    $actas['lvaloraciones'] =
                        $this->obtenerTodasValoracionesCandidatos($lang, $idConvocatoria);
                }

                $convocatoriaFormateada = [
                    'id' => $idConvocatoria,
                    'referencia' => $convocatoria->getReferencia(),
                    'descripcion' => $convocatoria->getDescripcion(),
                    'trabajo' => $convocatoria->getPuestotrabajo(),
                    'finicio' => $convocatoria->getFechainicio(),
                    'ffin' => $convocatoria->getFechafin(),
                    'basesgenerales' => $convocatoria->getRutaarchivoconvocatoria(),
                    'basesespecificas' => $convocatoria->getRutaarchivoespecifico(),
                    'actas' => $actas,
                    'resolucionrequisitos' => $convocatoria->getRutaarchivorequisitos(),
                    'resolucionexamen' => $convocatoria->getRutaarchivoexamen(),
                    'resolucionmeritos' => $convocatoria->getRutaarchivoresolucionfinal(),
                ];

                array_push($data, $convocatoriaFormateada);
            }
        }
        $this->load->view('reports/call.php', $data);
    }

    public function pdfPage(
        $lang, $idConvocatoria, $wpuser = 0, $returnArray = false
    ) {
        $dbRepository = new DBConvocatoriaRepository();
        $data['lconvocatoria'] = call_user_func([
            $dbRepository, 'obtenerConvocatoriasReferencia',
        ], $lang, null);

        $dbRepository15 = new DBTribunalConvocatoriaRepository();
        $data['myltribunal'] = call_user_func([
            $dbRepository15, 'obtenerTribunalConvocatoriasPorUsuarioWP',
        ], $lang, $wpuser);

        if (!isset($idConvocatoria) || $idConvocatoria == null) {
            if (isset($data['lconvocatoria'])
                && $data['lconvocatoria'] != null) {
                if (is_array($data['lconvocatoria'])
                    && count($data['lconvocatoria']) > 0
                    && is_object(reset($data['lconvocatoria']))) {
                    $dbRepository = new DBCandidatoConvocatoriaRepository();
                    $data['lcandidato'] = call_user_func([
                        $dbRepository, 'obtenerCandidatosPorConvocatoria',
                    ], $lang, reset($data['lconvocatoria'])->getIdconvocatoria());

                    $convocatoria = reset($data['lconvocatoria']);

                    $data['requisitos'] =
                        $this->obtenerRequisitosConvocatoria(
                            $lang, $convocatoria->getIdconvocatoria()
                        );
                    $data['meritos'] =
                        $this->obtenerMeritosConvocatoria(
                            $lang, $convocatoria->getIdconvocatoria()
                        );
                    $data['convocatoria'] = $convocatoria;
                    $dbRepository1 = new DBTribunalConvocatoriaRepository();
                    $data['ltribunal'] = call_user_func([
                        $dbRepository1, 'obtenerTribunal',
                    ], $lang, $convocatoria->getIdconvocatoria());
                    $dbRepository2 =
                        new DBTribunalAprobacionRequisitosRepository();
                    $data['aprobacionr'] = call_user_func([
                        $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                    ], $lang, $convocatoria->getIdconvocatoria());
                    $dbRepository3 =
                        new DBTribunalAprobacionMeritosRepository();
                    $data['aprobacionm'] = call_user_func([
                        $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                    ], $lang, $convocatoria->getIdconvocatoria());
                    $dbRepository4 = new DBImpugnacionRepository();
                    $data['impugnaciones'] = call_user_func([
                        $dbRepository4, 'obtenerImpugnaciones',
                    ], $lang, $convocatoria->getIdconvocatoria());
                    $dbRepository5 = new DBImpugnacionDocRepository();
                    $data['impugnacionesdoc'] = call_user_func([
                        $dbRepository5, 'obtenerImpugnacionesDoc',
                    ], $lang, $convocatoria->getIdconvocatoria());

                }
            } else {
                $data['lcandidato'] = null;
                $data['requisitos'] = null;
                $data['meritos'] = null;
                $data['convocatoria'] = null;
                $data['ltribunal'] = null;
                $data['aprobacionr'] = null;
                $data['aprobacionm'] = null;
                $data['impugnacion'] = null;
                $data['impugnacionesdoc'] = null;

            }
        } else {
            $dbRepository = new DBCandidatoConvocatoriaRepository();
            $data['lcandidato'] = call_user_func([
                $dbRepository, 'obtenerCandidatosPorConvocatoria',
            ], $lang, $idConvocatoria);

            $dbRepository = new DBConvocatoriaRepository();
            $convocatoria = call_user_func([
                $dbRepository, 'obtenerConvocatorias',
            ], $lang, $idConvocatoria);

            if (is_array($convocatoria)) {
                $convocatoria = reset($convocatoria);
            }
            $data['requisitos'] =
                $this->obtenerRequisitosConvocatoria(
                    $lang, $convocatoria->getIdconvocatoria()
                );
            $data['meritos'] =
                $this->obtenerMeritosConvocatoria(
                    $lang, $convocatoria->getIdconvocatoria()
                );
            $data['convocatoria'] = $convocatoria;
            $dbRepository1 = new DBTribunalConvocatoriaRepository();
            $data['ltribunal'] = call_user_func([
                $dbRepository1, 'obtenerTribunal',
            ], $lang, $convocatoria->getIdconvocatoria());
            $dbRepository2 = new DBTribunalAprobacionRequisitosRepository();
            $data['aprobacionr'] = call_user_func([
                $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
            ], $lang, $convocatoria->getIdconvocatoria());
            $dbRepository3 = new DBTribunalAprobacionMeritosRepository();
            $data['aprobacionm'] = call_user_func([
                $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
            ], $lang, $convocatoria->getIdconvocatoria());
            $dbRepository4 = new DBImpugnacionRepository();
            $data['impugnaciones'] = call_user_func([
                $dbRepository4, 'obtenerImpugnaciones',
            ], $lang, $convocatoria->getIdconvocatoria());
            $dbRepository5 = new DBImpugnacionDocRepository();
            $data['impugnacionesdoc'] = call_user_func([
                $dbRepository5, 'obtenerImpugnacionesDoc',
            ], $lang, $convocatoria->getIdconvocatoria());
			$dbRepository6 = new DBTribunalAprobacionExamenRepository();
			$data['aprobacione'] = call_user_func([
				$dbRepository6, 'obtenerAprobacionesPorConvocatoria',
			], $lang, $convocatoria->getIdconvocatoria());

        }

        if ($data['convocatoria'] != null
            && ($data['requisitos'] != null
                || $data['meritos'] != null)) {
            $data['lvaloraciones'] =
                $this->obtenerTodasValoracionesCandidatos(
                    $lang, $data['convocatoria']->getIdconvocatoria()
                );
        }

        if ($returnArray) {
            return $data;
        } else {
            $this->load->view('pdfPage.php', $data);
        }
    }

    public function getCandidatoAdjudicadoConvocatoria(
        $idConvocatoria, $lang
    ): string {
        $data = $this->pdfPage($lang, $idConvocatoria, 0, true);
        $totalCandidato = 0;
		
		if (!isset($data['lcandidato'])) {
			return __('Awarded place no covered','panoramic_child');
		}

        if ($data['convocatoria']->getTieneExamen()) {
            usort($data['lcandidato'], function ($a, $b) use ($data) {
                $total1 = 0;
                $total2 = 0;

                foreach ($data['meritos'] as $merito) {
                    foreach ($data['lvaloraciones'] as $valoracion) {
                        if ($valoracion->getCodigoconvocatoriamerito() != null) {
                            $valoracion_codigo_merito_requisito = ($valoracion->getCodigoconvocatoriamerito())->getIdconvocatoriamerito();
                        } else {
                            $valoracion_codigo_merito_requisito = null;
                        }

                        if (
                            $merito->getIdconvocatoriamerito() == $valoracion_codigo_merito_requisito
                            && ($a->getCodigocandidato())->getIdcandidato() == ($valoracion->getCodigocandidato())->getIdcandidato()
                            && (($valoracion->getCodigotribunalconvocatoria())->getCodigoRol())->getIdrol() == 5
                        ) {
                            $return = $valoracion->getPuntuacion();
                            $total1 += $return;
                            break;
                        }
                    }
                }
                foreach ($data['lvaloraciones'] as $valoracion) {
                    if (
                        $valoracion->getCodigoconvocatoriamerito() != null) {
                        $valoracion_codigo_merito_requisito = ($valoracion->getCodigoconvocatoriamerito())->getIdconvocatoriamerito();
                    } elseif ($valoracion->getCodigoconvocatoriarequisito() != null) {
                        $valoracion_codigo_merito_requisito = ($valoracion->getCodigoconvocatoriarequisito())->getIdconvocatoriarequisito();
                    } else {
                        $valoracion_codigo_merito_requisito = null;
                    }

                    if (
                        $valoracion_codigo_merito_requisito == null
                        && ($a->getCodigocandidato())->getIdcandidato() == ($valoracion->getCodigocandidato())->getIdcandidato()
                        && (($valoracion->getCodigotribunalconvocatoria())->getCodigoRol())->getIdrol() == 5
                    ) {
                        $nota1 = $valoracion->getExamennota();
                        break;
                    }
                }
                $totalA = $total1 * $data['convocatoria']->getPonderacionMeritos() / 100
                    + $nota1 * $data['convocatoria']->getPonderacionExamen()  / 100;

                foreach ($data['meritos'] as $merito) {
                    foreach ($data['lvaloraciones'] as $valoracion) {
                        if ($valoracion->getCodigoconvocatoriamerito() != null) {
                            $valoracion_codigo_merito_requisito =
                                ($valoracion->getCodigoconvocatoriamerito())->getIdconvocatoriamerito();
                        } else {
                            $valoracion_codigo_merito_requisito = null;
                        }

                        if (
                            $valoracion_codigo_merito_requisito != null
                            && $merito->getIdconvocatoriamerito() == $valoracion_codigo_merito_requisito
                            && ($b->getCodigocandidato())->getIdcandidato() == ($valoracion->getCodigocandidato())->getIdcandidato()
                            && (($valoracion->getCodigotribunalconvocatoria())->getCodigoRol())->getIdrol() == 5
                        ) {
                            $return = $valoracion->getPuntuacion();
                            $total2 += $return;
                            break;
                        }
                    }
                }
                foreach ($data['lvaloraciones'] as $valoracion) {
                    if ($valoracion->getCodigoconvocatoriamerito() != null) {
                        $valoracion_codigo_merito_requisito = ($valoracion->getCodigoconvocatoriamerito())->getIdconvocatoriamerito();
                    } elseif ($valoracion->getCodigoconvocatoriarequisito() != null) {
                        $valoracion_codigo_merito_requisito = ($valoracion->getCodigoconvocatoriarequisito())->getIdconvocatoriarequisito();
                    } else {
                        $valoracion_codigo_merito_requisito = null;
                    }

                    if (
                        $valoracion_codigo_merito_requisito == null
                        && ($b->getCodigocandidato())->getIdcandidato() == ($valoracion->getCodigocandidato())->getIdcandidato()
                        && (($valoracion->getCodigotribunalconvocatoria())->getCodigoRol())->getIdrol() == 5
                    ) {
                        $nota2 = $valoracion->getExamennota();
                        break;
                    }
                }
                $totalB = $total2 * $data['convocatoria']->getPonderacionMeritos() / 100
                          + $nota2 * $data['convocatoria']->getPonderacionExamen()  / 100;

                return ($totalA < $totalB)
                    ? 1
                    : -1;
            });

            foreach ($data['meritos'] as $merito) {
                foreach ($data['lvaloraciones'] as $valoracion) {
                    if ($valoracion->getCodigoconvocatoriamerito() != null) {
                        $valoracion_codigo_merito_requisito =
                            ($valoracion->getCodigoconvocatoriamerito())->getIdconvocatoriamerito();
                    } else {
                        $valoracion_codigo_merito_requisito = null;
                    }

                    if (
                        $valoracion_codigo_merito_requisito != null
                        && $merito->getIdconvocatoriamerito() == $valoracion_codigo_merito_requisito
                        && ($data['lcandidato'][0]->getCodigocandidato())->getIdcandidato() == ($valoracion->getCodigocandidato())->getIdcandidato()
                        && (($valoracion->getCodigotribunalconvocatoria())->getCodigoRol())->getIdrol() == 5
                    ) {
                        $return = $valoracion->getPuntuacion();
                        $total += $return;
                        break;
                    }
                }
            }
            foreach ($data['lvaloraciones'] as $valoracion) {
                if ($valoracion->getCodigoconvocatoriamerito() != null) {
                    $valoracion_codigo_merito_requisito = ($valoracion->getCodigoconvocatoriamerito())->getIdconvocatoriamerito();
                } elseif ($valoracion->getCodigoconvocatoriarequisito() != null) {
                    $valoracion_codigo_merito_requisito = ($valoracion->getCodigoconvocatoriarequisito())->getIdconvocatoriarequisito();
                } else {
                    $valoracion_codigo_merito_requisito = null;
                }

                if (
                    $valoracion_codigo_merito_requisito == null
                    && ($data['lcandidato'][0]->getCodigocandidato())->getIdcandidato() == ($valoracion->getCodigocandidato())->getIdcandidato()
                    && (($valoracion->getCodigotribunalconvocatoria())->getCodigoRol())->getIdrol() == 5
                ) {
                    $nota = $valoracion->getExamennota();
                    break;
                }
            }
            $totalCandidato = $total * $data['convocatoria']->getPonderacionMeritos() /100
                              + $nota * $data['convocatoria']->getPonderacionExamen()  / 100;
        } else {
            usort($data['lcandidato'], function ($a, $b) use ($data) {
                $total1 = 0;
                $total2 = 0;
                foreach ($data['meritos'] as $merito) {
                    foreach ($data['lvaloraciones'] as $valoracion) {
                        if ($valoracion->getCodigoconvocatoriamerito()
                            != null) {
                            $valoracion_codigo_merito_requisito =
                                ($valoracion->getCodigoconvocatoriamerito())->getIdconvocatoriamerito();
                        } else {
                            $valoracion_codigo_merito_requisito = null;
                        }

                        if (
                            $merito->getIdconvocatoriamerito()
                            == $valoracion_codigo_merito_requisito
                            && ($a->getCodigocandidato())->getIdcandidato()
                               == ($valoracion->getCodigocandidato())->getIdcandidato()
                            && (($valoracion->getCodigotribunalconvocatoria())->getCodigoRol())->getIdrol()
                               == 5
                        ) {
                            $return = $valoracion->getPuntuacion();
                            $total1 += $return;
                            break;
                        }
                    }
                }
                foreach ($data['meritos'] as $merito) {
                    foreach ($data['lvaloraciones'] as $valoracion) {
                        if ($valoracion->getCodigoconvocatoriamerito()
                            != null) {
                            $valoracion_codigo_merito_requisito =
                                ($valoracion->getCodigoconvocatoriamerito())->getIdconvocatoriamerito();
                        } else {
                            $valoracion_codigo_merito_requisito = null;
                        }

                        if (
                            $valoracion_codigo_merito_requisito != null
                            && $merito->getIdconvocatoriamerito()
                               == $valoracion_codigo_merito_requisito
                            && ($b->getCodigocandidato())->getIdcandidato()
                               == ($valoracion->getCodigocandidato())->getIdcandidato()
                            && (($valoracion->getCodigotribunalconvocatoria())->getCodigoRol())->getIdrol()
                               == 5
                        ) {
                            $return = $valoracion->getPuntuacion();
                            $total2 += $return;
                            break;
                        }
                    }
                }

                return ($total1 < $total2)
                    ? 1
                    : -1;
            });
            foreach ($data['meritos'] as $merito) {
                foreach ($data['lvaloraciones'] as $valoracion) {
                    if ($valoracion->getCodigoconvocatoriamerito() != null) {
                        $valoracion_codigo_merito_requisito =
                            ($valoracion->getCodigoconvocatoriamerito())->getIdconvocatoriamerito();
                    } else {
                        $valoracion_codigo_merito_requisito = null;
                    }

                    if (
                        $valoracion_codigo_merito_requisito != null
                        && $merito->getIdconvocatoriamerito() == $valoracion_codigo_merito_requisito
                        && ($data['lcandidato'][0]->getCodigocandidato())->getIdcandidato() == ($valoracion->getCodigocandidato())->getIdcandidato()
                        && (($valoracion->getCodigotribunalconvocatoria())->getCodigoRol())->getIdrol() == 5
                    ) {
                        $return = $valoracion->getPuntuacion();
                        $total += $return;
                        break;
                    }
                }
            }
            $totalCandidato = $total;
        }

        return $totalCandidato >= $data['convocatoria']->getUmbraldepuntuacion()
            ?  ($data['lcandidato'][0]->getCodigocandidato())->getNombre() . ' '
               . ($data['lcandidato'][0]->getCodigocandidato())->getApellido1() . ' '
               . ($data['lcandidato'][0]->getCodigocandidato())->getApellido2()
            : __('Awarded place no covered','panoramic_child');
    }

    public function actualizarPlazaAdjudicada(
        $idConvocatoria, $nombreCandidato
    ) {
        $dbRepository = new DBConvocatoriaRepository();
        call_user_func(
            [$dbRepository, 'actualizarPlazaAdjudicada',],
            $idConvocatoria,
            $nombreCandidato
        );
    }
	    
	public function getCandidato($idWp, $lang)
    {
		$dbRepository = new DBCandidatoRepository();
		$candidato = call_user_func(
			[
				$dbRepository, 'obtenerCandidato',
			], 
			$lang, 
			$idWp
		);
		
		if (is_array($candidato)) {
			$candidato = reset($candidato);
		}			

		return $candidato->getNombre() . ' '
							. $candidato->getApellido1() . ' '
							. $candidato->getApellido2();;
    }
}
?>